//引入第三方包 express
var express = require('express')

//实例化express
var app = express()

//设置静态资源托管文件夹
//app.use()注册中间件
//express.static()  express内置的一个静态资源托管的中间件
app.use(express.static('static'))
//全局数据
var arr = [
    { email: '123123@qq.com', name: '张伟', phone: '18292956504', pass: '1234', ingroup: '编辑组', isadmin: true, status: true },
    { email: '123123@qq.com', name: '李煜', phone: '18292956504', pass: '1234', ingroup: '编辑组', isadmin: true, status: true },
    { email: '123123@qq.com', name: '李清照', phone: '18292956504', pass: '1234', ingroup: '编辑组', isadmin: true, status: true },
    { email: '123123@qq.com', name: '李莉', phone: '18292956504', pass: '1234', ingroup: '编辑组', isadmin: true, status: true },
    { email: '123123@qq.com', name: '张三', phone: '18292956504', pass: '1234', ingroup: '编辑组', isadmin: true, status: true }
]
//
//在所有接口前设置 处理post请求参数的中间件
app.use(express.json())
app.use(express.urlencoded({ extended: false }))
//分页
//设置接口
app.get('/user/list', (req, res) => {
    console.log('收到了客户端的请求');
    //服务器端发请求携带的参数
    var { page, count } = req.query
    console.log(page, count);

    //分页
    //slice(0,10) 取前10个
    //slice(10,20) 取前11-20个
    var newarr = arr.slice((page - 1) * count, page * count)

    //req 请求对象，包含了和本次请求相关的所有信息(请求地址，请求方式，携带的参数)
    //res 响应对象，可以借助res向客户端返回信息(字符串，json格式数据，网页)
    res.send({ code: 200, msg: '请求成功！', list: newarr })
})

//模糊搜索
app.get('/user/search', (req, res) => {
    //接受参数
    var { searchkey } = req.query
    //根据参数，从用户的name属性中过滤
    var newarr = arr.filter((item) => {
        //indexOf() 返回的是下标，没找到就返回-1
        //return item.name.indexOf(searchkey) != - 1
        //includes() 返回true/false
        //return item.name.includes(searchkey)
        return new RegExp(searchkey).test(item.name)
    })
    //返回数据
    res.send({ code: 200, msg: '查询成功！', list: newarr })
})

//登录
app.post('/user/login', (req, res) => {
    console.log('收到了客户端的请求');
    var { phone, pass } = req.body
    console.log(phone, pass);
    //req 请求对象，包含了和本次请求相关的所有信息(请求地址，请求方式，携带的参数)
    //res 响应对象，可以借助res向客户端返回信息(字符串，json格式数据，网页)

    //用来自客户端的数据做判断，判断是否在服务端的用户列表中
    var i = arr.findIndex((item,index) => {
        return item.phone == phone && item.pass == pass
    })
    //如果i不是-1，说明来自客户端的数据是合法的
    if (i != -1) {
        //登录成功时，可以一并返回 登录成功的用户信息
        res.send({ code: 200, msg: '登录成功！', userinfo: arr[i], token: '' })
    } else {
        res.send({ code: 400, msg: '登录失败！' })
    }

})

//设置监听
app.listen(8080, () => {
    console.log('服务端运行在: http://localhost:8080');
})